This invention relates generally to information exchange between computers of different types and, more particularly, to information exchange in computer networks, between computers of different types, using various higher order programming languages. These languages, such as Ada, C, and C++, provide highly convenient programming tools for computer users developing various application programs. Basically, a high level programming language allows a programmer to condition a computer to perform desired data input, data output, logical and mathematical operations, without the programmer having to be concerned with details of the computer hardware and how it operates to perform these functions. Typically, complex application programs are written in a higher order language using statements resembling an English-language description, and then "compiled" by other programs called compilers, which translate the original higher order statements into a lower level language that is directly executable by the computer, and is usually referred to as the object language or the machine language.
Each higher order language provides strict standards for defining composite data types that may be used in an application program. Data types may include records, arrays and other structures. A difficulty arises because none of these languages provides for any standard internal machine representation of the data structures. The same or different compilers used on different computers, sometimes referred to as "platforms," may result in different internal data formats for the same data. Different compilers used on identical platforms may also result in different internal data formats. The different internal data formats would be of no concern if the computer systems that used them had no need to communicate with each other, but the trend in computer systems is for greater levels of interconnection, usually through computer networks of various configurations. When information is to be exchanged between computer applications that employ different internal data representations and layout in computer memory, some form of data format conversion is required.
Prior to this invention, the burden for data translation has been placed on the users of the incompatible systems, who must call separate services to encode and decode basic data field types or to define messages in a separate language syntax that will be used for information exchange. These prior approaches do not provide transparent data exchange between platforms, and impose a significant translation overhead on the systems involved. Moreover, programs that are configured in this way to perform translation for communication with heterogeneous systems cannot be readily moved to different platforms involved in communication with similar (i.e. homogeneous) systems.
Ideally, what is needed is a technique that allows each compiled application program to exchange data in terms of its own "native" language composite data types. Each compiled program should be able to exchange data transparently with programs running on other platforms, without regard for differences in internal data format that may exist between the platforms. The present invention accomplishes this goal.